﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using System.Collections;
using Proxy;
using System.Text;
using log4net;
using log4net.Config;
using log4net.Core;
using SIM.Util;
namespace SIM.Geo.UI.Geo
{
    public partial class frmUnidadMinera : PageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                this.txtCodigo.Enabled = false;
                Listar();
            }

        }

        protected override void Listar()
        {
            try
            {
                using (var proxy = new SEUnidadMineraClient("BasicHttpBinding_ISEUnidadMinera"))
                {
                    var lista = proxy.ListarUnidadMinera();
                    this.rgLista.DataSource = lista;
                    
                    this.rgLista.DataBind();
                }

            }
            catch (Exception ex)
            {

                Logger.Error("Unidad Minera:Listar", ex);

            }
        }

        protected void rgLista_DeleteCommand(object sender, GridCommandEventArgs e)
        {
            try
            {
                int codigoUnidad = int.Parse(((GridDataItem)e.Item).GetDataKeyValue("CodigoUnidad").ToString());
                try
                {
                    using (var proxy = new SEUnidadMineraClient("BasicHttpBinding_ISEUnidadMinera"))
                    {
                        proxy.EliminarUnidadMinera(codigoUnidad);
                    }
                }
                catch (Exception ex)
                {
                    MostrarMensaje(MSG_ERROR_ELIMINAR, enmTipoMensajeMostrar.Error);
                    Logger.Error("Unidad Minera:rgLista_DeleteCommand", ex);
                }
                Listar();
                MostrarMensaje(MSG_OK_ELIMINAR);
            }
            catch (Exception ex)
            {
                MostrarMensaje(MSG_ERROR_GENERICO, enmTipoMensajeMostrar.Error);
                Logger.Error("Unidad Minera: rgLista_DeleteCommand", ex);

            }
        }

        protected override void Limpiar()
        {
            this.hidCodigo.Value = "0";
            this.txtCodigo.Text = string.Empty;
            this.txtNombreUnidadMinera.Text = string.Empty;
            this.txtRangoEsteI.Value = 0;
            this.txtRangoEsteF.Value = 0;
            this.txtRangoNorteI.Value = 0;
            this.txtRangoNorteF.Value = 0;
            this.txtRangoCotaI.Value = 0;
            this.txtRangoCotaF.Value = 0;
            this.txtRangoSeccionI.Value = 0;
            this.txtRangoSeccionF.Value = 0;

            OcultarMensaje();
            OcultarMensajeValidacion();
        }

        private void CargarDatos(int codigoUnidad)
        {
            try
            {
                using (var proxy = new SEUnidadMineraClient("BasicHttpBinding_ISEUnidadMinera"))
                {
                    var item = proxy.ObtenerUnidadMinera(codigoUnidad);
                    if (item != null)
                    {
                        this.hidCodigo.Value = item.CodigoUnidad.ToString();
                        this.txtCodigo.Text = item.CodigoUnidad.ToString();
                        this.txtNombreUnidadMinera.Text = item.Nombre.ToString();
                        this.txtRangoEsteI.Text = item.RangoInicialEste.ToString();
                        this.txtRangoEsteF.Text = item.RangoFinalEste.ToString();
                        this.txtRangoNorteI.Text = item.RangoInicialNorte.ToString();
                        this.txtRangoNorteF.Text = item.RangoFinalNorte.ToString();
                        this.txtRangoCotaI.Text = item.RangoInicialCota.ToString();
                        this.txtRangoCotaF.Text = item.RangoFinalCota.ToString();
                        this.txtRangoSeccionI.Text = item.RangoInicialSeccion.ToString();
                        this.txtRangoSeccionF.Text = item.RangoFinalSeccion.ToString();
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Unidad Minera:CargarDatos", ex);
            }
        }
        protected void rgLista_ItemCommand(object sender, GridCommandEventArgs e)
        {
            if (e.CommandName.CompareTo("Editar") == 0)
            {
                var item = ((GridEditableItem)e.Item);
                int codigoUnidad = int.Parse(item.GetDataKeyValue("CodigoUnidad").ToString());
                CargarDatos(codigoUnidad);
                this.pnlMensajeValidacion.Visible = false;
                this.mpRegistro.Show();
            }
            if (e.CommandName == RadGrid.FilterCommandName)
            {
                Listar();
            }
        }

        protected void btnClose_Click(object sender, EventArgs e)
        {
            this.mpRegistro.Hide();
        }

        protected void imgClose_Click(object sender, ImageClickEventArgs e)
        {
            this.mpRegistro.Hide();
        }

        protected void rgLista_PageIndexChanged(object sender, GridPageChangedEventArgs e)
        {
            Listar();
        }

        protected void rgLista_SortCommand(object sender, GridSortCommandEventArgs e)
        {
            Listar();
        }

        protected void ibtnBuscar_Click(object sender, ImageClickEventArgs e)
        {
            this.Listar();
        }

        protected void ibtnExportar_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                Listar();
                string alternateText = "ExcelML";
                rgLista.ExportSettings.Excel.Format = (GridExcelExportFormat)Enum.Parse(typeof(GridExcelExportFormat), alternateText);
                rgLista.ExportSettings.IgnorePaging = true;
                rgLista.ExportSettings.ExportOnlyData = true;
                rgLista.ExportSettings.OpenInNewWindow = true;
                rgLista.MasterTableView.ExportToExcel();
            }
            catch (Exception ex)
            {

                Logger.Error("Unidad Minera:ibtnExportar_Click", ex);
            }
        }

        protected void ibtnRegistrar_Click(object sender, ImageClickEventArgs e)
        {
            Limpiar();
            using (var proxy = new SEUnidadMineraClient("BasicHttpBinding_ISEUnidadMinera"))
            {
                this.txtCodigo.Text = proxy.GenerarCodigoUnidadMinera().ToString();
                this.txtCodigo.Enabled = true;
            }
            this.pnlMensajeValidacion.Visible = false;
            this.hidCodigo.Value = "0";
            this.mpRegistro.Show();
        }

        protected void ibtnGuardar_Click(object sender, ImageClickEventArgs e)
        {
           this.Guardar();

        }

        protected void ibtnCancelar_Click(object sender, ImageClickEventArgs e)
        {
            this.mpRegistro.Hide();
        }





       #region Metodos Sobreescribibles


        protected override bool Validar(ref  StringBuilder sb)
        {
            bool retorno = true;
            try
            {
                //valida el nombre ingresado ya existe, si solo es nuevo
                if (this.hidCodigo.Value.CompareTo("0") == 0)
                {
                    using (SEUnidadMineraClient proxy = new SEUnidadMineraClient("BasicHttpBinding_ISEUnidadMinerao"))
                    {
                        var lista = proxy.ListarUnidadMineraPorNombre(this.txtNombreUnidadMinera.Text.Trim());
                        if (lista.ToList().Count > 0)
                        {
                            sb.AppendLine("El Nombre de Unidad Minera " +" "+ this.txtNombreUnidadMinera.Text.Trim() + " ya existe");
                            retorno = false;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                retorno = false;
                Logger.Error("Unidad Minera:Validar", ex);
            }
            return retorno;
        }

        protected override void Guardar()
        {
            try
            {
                //Se valida antes de grabar
                StringBuilder sb = new StringBuilder();
                if (!Validar(ref sb))
                {
                    MostrarMensajeValidacion(sb.ToString());
                    return;
                }
                UnidadMinera unidadminera = new UnidadMinera();

                unidadminera.CodigoUnidad = int.Parse(this.hidCodigo.Value);
                unidadminera.Nombre = this.txtNombreUnidadMinera.Text;
                unidadminera.RangoInicialEste = int.Parse(this.txtRangoEsteI.Text);
                unidadminera.RangoFinalEste = int.Parse(this.txtRangoEsteF.Text);
                unidadminera.RangoInicialNorte = int.Parse(this.txtRangoNorteI.Text);
                unidadminera.RangoFinalNorte = int.Parse(this.txtRangoNorteF.Text);
                unidadminera.RangoInicialCota = int.Parse(this.txtRangoCotaI.Text);
                unidadminera.RangoFinalCota = int.Parse(this.txtRangoCotaF.Text);
                unidadminera.RangoInicialSeccion = int.Parse(this.txtRangoSeccionI.Text);
                unidadminera.RangoFinalSeccion = int.Parse(this.txtRangoSeccionF.Text);

                using (SEUnidadMineraClient proxy = new SEUnidadMineraClient("BasicHttpBinding_ISEUnidadMinera"))
                {
                    if (this.hidCodigo.Value.CompareTo("0") == 0)
                        proxy.InsertarUnidadMinera(unidadminera);
                    else
                        proxy.ModificarUnidadMinera(unidadminera);
                }

                MostrarMensaje(MSG_OK_GRABAR);
                Listar();

                this.mpRegistro.Hide();
            }
            catch (Exception ex)
            {
                MostrarMensajeValidacion(MSG_ERROR_GRABAR);
                Logger.Error("Unidad Minera:Guardar", ex);
            }
        }

        #endregion

        #region
        protected override void MostrarMensaje(string mensaje, enmTipoMensajeMostrar tipoMensaje = enmTipoMensajeMostrar.Informativa)
        {
            this.pnlMensaje.Visible = true;
            this.lblMensaje.Text = mensaje;
            if (tipoMensaje == enmTipoMensajeMostrar.Error)
                this.pnlMensaje.CssClass = "alert alert-danger";

            if (tipoMensaje == enmTipoMensajeMostrar.Informativa)
                this.pnlMensaje.CssClass = "alert alert-success";

            if (tipoMensaje == enmTipoMensajeMostrar.Advertencia)
                this.pnlMensaje.CssClass = "alert alert-warning alert-dismissable";

        }

        protected override void OcultarMensaje()
        {
            this.pnlMensaje.Visible = false;
            this.lblMensaje.Text = string.Empty;
        }

        protected override void MostrarMensajeValidacion(string mensaje)
        {
            this.pnlMensajeValidacion.Visible = true;
            this.lblMensajeValidacion.Text = mensaje;
        }
        protected override void OcultarMensajeValidacion()
        {
            this.pnlMensajeValidacion.Visible = false;
            this.lblMensajeValidacion.Text = string.Empty;
        }
        #endregion

        protected void rgLista_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e)
        {
            Listar();
        }

    }
}